#include <iostream>
#include <sys/types.h>
#include <unistd.h>
using namespaces std;

// root 切换到 普通用户
static bool switch_to_user(uid_t user_id, gid_t gp_id)
{
    // 要切换目标用户是普通用户 直接返回
    if((user_id == 0) && (gp_id == 0))
    {
        return false;
    }

    gid_t gid = getgid();
    uid_t uid = getuid();
    // 当前用户不是root 且当前用户不是目标用户
    if(((gid != 0) || (uid != 0)) && ((gid != gp_id) || (uid != user_id)))
    {
        return false;
    }
    // 不是root，则已经是普通用户
    if(uid != 0)
    {
        return true;
    }

    // 切换到目标用户
    if ((setgid(gp_id) < 0) || (setuid(user_id) < 0))
    {
        return false;
    }

    return true;
}